home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / cpu / m6502 / m6509.h < prev    next >
C/C++ Source or Header  |  2000-05-04  |  3KB  |  81 lines

  1. /*****************************************************************************
  2.  *
  3.  *     m6509.h
  4.  *     Portable 6509 emulator V1.0beta
  5.  *
  6.  *     Copyright (c) 2000 Peter Trauner, all rights reserved.
  7.  *
  8.  *     - This source code is released as freeware for non-commercial purposes.
  9.  *     - You are free to use and redistribute this code in modified or
  10.  *       unmodified form, provided you list me in the credits.
  11.  *     - If you modify this source code, you must add a notice to each modified
  12.  *       source file that it has been changed.  If you're a nice person, you
  13.  *       will clearly mark each change too.  :)
  14.  *     - If you wish to use this for commercial purposes, please contact me at
  15.  *       pullmoll@t-online.de
  16.  *     - The author of this copywritten work reserves the right to change the
  17.  *       terms of its usage and license at any time, including retroactively
  18.  *     - This entire notice must remain in the source code.
  19.  *
  20.  *****************************************************************************/
  21.  
  22. #ifndef _M6509_H
  23. #define _M6509_H
  24.  
  25. #include "cpuintrf.h"
  26. #include "osd_cpu.h"
  27. #include "m6502.h"
  28.  
  29. enum {
  30.     M6509_PC=1, M6509_S, M6509_P, M6509_A, M6509_X, M6509_Y,
  31.     M6509_EA, M6509_ZP, M6509_NMI_STATE, M6509_IRQ_STATE, M6509_SO_STATE,
  32.     M6509_PC_BANK, M6509_IND_BANK
  33. };
  34.  
  35. #define M6509_INT_NONE    0
  36. #define M6509_INT_IRQ    1
  37. #define M6509_INT_NMI    2
  38. /* use cpu_set_irq_line(cpu, M6509_SET_OVERFLOW, level)
  39.    to change level of the so input line
  40.    positiv edge sets overflow flag */
  41. #define M6509_SET_OVERFLOW 3
  42.  
  43. #define M6509_NMI_VEC    M6502_NMI_VEC
  44. #define M6509_RST_VEC    M6502_RST_VEC
  45. #define M6509_IRQ_VEC    M6502_IRQ_VEC
  46.  
  47. extern int m6509_ICount;                /* cycle count */
  48.  
  49. extern void m6509_reset(void *param);            /* Reset registers to the initial values */
  50. extern void m6509_exit(void);                    /* Shut down CPU core */
  51. extern int    m6509_execute(int cycles);            /* Execute cycles - returns number of cycles actually run */
  52. extern unsigned m6509_get_context (void *dst);    /* Get registers, return context size */
  53. extern void m6509_set_context (void *src);        /* Set registers */
  54. extern unsigned m6509_get_pc (void);            /* Get program counter */
  55. extern void m6509_set_pc (unsigned val);        /* Set program counter */
  56. extern unsigned m6509_get_sp (void);            /* Get stack pointer */
  57. extern void m6509_set_sp (unsigned val);        /* Set stack pointer */
  58. extern unsigned m6509_get_reg (int regnum);
  59. extern void m6509_set_reg (int regnum, unsigned val);
  60. extern void m6509_set_nmi_line(int state);
  61. extern void m6509_set_irq_line(int irqline, int state);
  62. extern void m6509_set_irq_callback(int (*callback)(int irqline));
  63. extern void m6509_state_save(void *file);
  64. extern void m6509_state_load(void *file);
  65. extern const char *m6509_info(void *context, int regnum);
  66. extern unsigned m6509_dasm(char *buffer, unsigned pc);
  67.  
  68. extern READ_HANDLER ( m6509_read_00000 );
  69. extern READ_HANDLER ( m6509_read_00001 );
  70.  
  71. extern WRITE_HANDLER ( m6509_write_00000 );
  72. extern WRITE_HANDLER ( m6509_write_00001 );
  73.  
  74. #ifdef MAME_DEBUG
  75. extern unsigned int Dasm6509( char *dst, unsigned pc );
  76. #endif
  77.  
  78. #endif /* _M6509_H */
  79.  
  80.  
  81.